using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Entidades;
using Negocio.Controladora; 

namespace VtasMkt.Marketing.ServiciosMkt
{
    public partial class frmSala : Form
    {

        #region Variables y constantes

        private const int COL_ID = 0;
        DataTable dtImp = new DataTable();

        #endregion

        public frmSala()
        {
            InitializeComponent();
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            Entidades.Sala oSala = new Entidades.Sala();
            VtasMkt.Marketing.ServiciosMkt.frmActualizarSala oSalaAct = new VtasMkt.Marketing.ServiciosMkt.frmActualizarSala(oSala);
            oSalaAct.Tag = AccionMnt.NuevoRegistro;
            oSalaAct.ShowDialog();
            MostrarInfoGrilla();
        }

        private void btn_Editar_Click(object sender, EventArgs e)
        {
           
            if (dgvMain.SelectedRows.Count > 0)
            {
                Entidades.Sala oSala = new Entidades.Sala();
                oSala.CodigoSala = (int)(this.dgvMain.SelectedRows[0].Cells[0].Value);
                VtasMkt.Marketing.ServiciosMkt.frmActualizarSala oSalaAct = new VtasMkt.Marketing.ServiciosMkt.frmActualizarSala(oSala);
                oSalaAct.Tag = AccionMnt.EditarRegistro;
                oSalaAct.ShowDialog();
                MostrarInfoGrilla();
            }
            else
            {
                MessageBox.Show("Se debe selecionar un registro.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void frmSala_Load(object sender, EventArgs e)
        {
            MostrarInfoGrilla();
            CargaCombo(); 
        }

        #region Metodos privados

        // Muestra la informacion en la grilla del formulario
        private void MostrarInfoGrilla()
        {
            try
            {
                // Obtiene y prepara el filtro
                String pCodigoSala, pDescripcion, pEstado, pCapacidad, pLocalizacion;
                //VtasMkt.General.RutinasGenericas rutGen = new VtasMkt.General.RutinasGenericas();
                //fechaInicio = rutGen.FechaYYYYMMDD(this.dteFechaInicio.Value);
                //fechaFin = rutGen.FechaYYYYMMDD(this.dteFechaFin.Value);
                pCodigoSala = this.txtCodigoSala.Text ;
                pDescripcion = this.txtDescripcion.Text ;
                pEstado = Convert.ToString(this.cboEstado.SelectedValue) ;
                pCapacidad = this.txtCapacidad.Text ;
                pLocalizacion = this.txtLocalizacion.Text ; 

                // Obtiene la informacion y la carga a la grilla
                ActualizarSala oSalaCon = new ActualizarSala();
                DataTable dtInfo = oSalaCon.ListaSala(pCodigoSala, pDescripcion, pEstado, pCapacidad, pLocalizacion);
                dgvMain.DataSource = dtInfo;

                // Deja en memoria el DataTable para la impresion
                dtImp = dtInfo;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, this.Text);
            }
        }

        private void CargaCombo()
        {
            // Carga el combobox de Estado de Sala
            ActualizarSala oSalaCon = new ActualizarSala();
            DataTable dtInfo = oSalaCon.ListaEstado();
            dtInfo.Rows.InsertAt(dtInfo.NewRow(), 0);
            this.cboEstado.DataSource = dtInfo;
            this.cboEstado.DisplayMember = "Descripcion";
            this.cboEstado.ValueMember = "CodigoEstado";

        }

        #endregion

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            
            if (dgvMain.SelectedRows.Count > 0)
            {
                Entidades.Sala oSala = new Entidades.Sala();
                oSala.CodigoSala = (int)(this.dgvMain.SelectedRows[0].Cells[0].Value);
                VtasMkt.Marketing.ServiciosMkt.frmActualizarSala oSalaAct = new VtasMkt.Marketing.ServiciosMkt.frmActualizarSala(oSala);
                oSalaAct.Tag = AccionMnt.EliminarRegistro;
                oSalaAct.ShowDialog();
                MostrarInfoGrilla();

            }
            else
            {
                MessageBox.Show("Se debe selecionar un registro.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }


        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close(); 
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            ActualizarSala oSalaCon = new ActualizarSala();
            oSalaCon.ListaSala(this.txtCodigoSala.Text, this.txtDescripcion.Text, Convert.ToString(this.cboEstado.SelectedValue), this.txtCapacidad.Text, this.txtLocalizacion.Text);
            MostrarInfoGrilla();
            
        }

        private void txtCodigoSala_KeyPress(object sender, KeyPressEventArgs e)
        {
            VtasMkt.General.RutinasGenericas rutGen = new VtasMkt.General.RutinasGenericas();
            short KeyAscii = (short)(rutGen.Asc(e.KeyChar));
            if (rutGen.SoloNumeros(KeyAscii) == true)
            {
                e.Handled = true;
            }
        }

        private void txtCapacidad_KeyPress(object sender, KeyPressEventArgs e)
        {
            VtasMkt.General.RutinasGenericas rutGen = new VtasMkt.General.RutinasGenericas();
            short KeyAscii = (short)(rutGen.Asc(e.KeyChar));
            if (rutGen.SoloNumeros(KeyAscii) == true)
            {
                e.Handled = true;
            }
        }

        private void btnImprimir_Click(object sender, EventArgs e)
        {
            // Prepara el DataSet para la vista previa
            VtasMkt.Marketing.Sala.dsSala dsSala = new VtasMkt.Marketing.Sala.dsSala();
            dsSala.dtSala.Merge(dtImp);

            // Muestra el formulario de vista previa con el reporte
            VtasMkt.General.frmVerReporte verRptWin = new VtasMkt.General.frmVerReporte(dsSala);
            verRptWin.MdiParent = frmMain.ActiveForm;
            verRptWin.Show();
        }
    }
}
